// 后台脚本，处理插件安装和更新
chrome.runtime.onInstalled.addListener(function(details) {
  console.log('🔧 插件安装/更新事件:', details);
  
  if (details.reason === 'install') {
    console.log('🆕 首次安装，初始化存储');
    // 首次安装时初始化存储
    chrome.storage.local.set({
      prompts: [],
      version: chrome.runtime.getManifest().version,
      installDate: new Date().toISOString()
    });
  } else if (details.reason === 'update') {
    console.log('🔄 插件更新，保留现有数据');
    // 更新时保留现有数据，只更新版本信息
    chrome.storage.local.get(['prompts', 'version'], function(result) {
      const currentVersion = chrome.runtime.getManifest().version;
      const updateData = {
        version: currentVersion,
        lastUpdateDate: new Date().toISOString()
      };
      
      // 如果prompts不存在，初始化为空数组
      if (!result.prompts) {
        updateData.prompts = [];
        console.log('⚠️ 未找到现有数据，初始化为空数组');
      } else {
        console.log('✅ 保留现有数据，提示词数量:', result.prompts.length);
      }
      
      chrome.storage.local.set(updateData);
    });
  }
});

// 全局菜单状态
let isMenuVisible = false;

// 处理插件图标点击事件
chrome.action.onClicked.addListener(function(tab) {
  if (isMenuVisible) {
    // 如果菜单已显示，则隐藏所有页面的菜单
    hideMenuFromAllTabs();
  } else {
    // 如果菜单未显示，则显示菜单
    showMenuToAllTabs();
  }
});

// 向所有标签页显示菜单
function showMenuToAllTabs() {
  chrome.tabs.query({}, function(tabs) {
    tabs.forEach(tab => {
      // 跳过chrome://和chrome-extension://页面
      if (tab.url.startsWith('chrome://') || tab.url.startsWith('chrome-extension://')) {
        return;
      }
      
      chrome.tabs.sendMessage(tab.id, {action: 'showMenu'}, function(response) {
        if (chrome.runtime.lastError) {
          // 如果content script没有加载，先注入再发送消息
          chrome.scripting.executeScript({
            target: { tabId: tab.id },
            files: ['content.js']
          }, function() {
            if (!chrome.runtime.lastError) {
              chrome.tabs.sendMessage(tab.id, {action: 'showMenu'});
            }
          });
        }
      });
    });
  });
  isMenuVisible = true;
}

// 从所有标签页隐藏菜单
function hideMenuFromAllTabs() {
  chrome.tabs.query({}, function(tabs) {
    tabs.forEach(tab => {
      // 跳过chrome://和chrome-extension://页面
      if (tab.url.startsWith('chrome://') || tab.url.startsWith('chrome-extension://')) {
        return;
      }
      
      chrome.tabs.sendMessage(tab.id, {action: 'hideMenu'}, function(response) {
        if (chrome.runtime.lastError) {
          // 忽略错误，可能页面没有content script
        }
      });
    });
  });
  isMenuVisible = false;
}

// 数据备份功能
function backupData() {
  chrome.storage.local.get(null, function(data) {
    const backup = {
      ...data,
      backupDate: new Date().toISOString(),
      backupVersion: chrome.runtime.getManifest().version
    };
    
    // 保存备份到本地存储
    chrome.storage.local.set({
      dataBackup: backup
    });
    
    console.log('💾 数据备份完成:', backup);
  });
}

// 数据恢复功能
function restoreData() {
  chrome.storage.local.get(['dataBackup'], function(result) {
    if (result.dataBackup) {
      const backup = result.dataBackup;
      delete backup.dataBackup; // 避免循环引用
      delete backup.backupDate;
      delete backup.backupVersion;
      
      chrome.storage.local.set(backup);
      console.log('🔄 数据恢复完成:', backup);
    }
  });
}

// 处理来自content script的消息
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
  if (request.action === 'savePrompt') {
    // 保存提示词后自动备份
    backupData();
    sendResponse({success: true});
  } else if (request.action === 'openManagePage') {
    // 打开管理页面
    chrome.tabs.create({ url: chrome.runtime.getURL('manage.html') });
    sendResponse({success: true});
  } else if (request.action === 'menuClosed') {
    // 菜单被关闭，更新全局状态
    isMenuVisible = false;
    sendResponse({success: true});
  } else if (request.action === 'backupData') {
    // 手动备份数据
    backupData();
    sendResponse({success: true, message: '数据备份完成'});
  } else if (request.action === 'restoreData') {
    // 手动恢复数据
    restoreData();
    sendResponse({success: true, message: '数据恢复完成'});
  }
});
